package com.stt.controller;

import com.stt.dto.CharacterCreateRequest;
import com.stt.model.Character;
import com.stt.factory.CharacterFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 角色控制器
 * 提供角色创建和克隆的REST API接口
 *
 * @author Your Name
 * @version 1.0
 */
@RestController
@RequestMapping("/api/characters")
public class CharacterController {
    
    /**
     * 角色工厂实例
     * 用于处理角色的创建和克隆
     */
    @Autowired
    private CharacterFactory characterFactory;
    
    /**
     * 创建新角色
     * 支持可选地将创建的角色保存为模板
     *
     * @param request 角色创建请求对象
     * @param saveAsTemplate 可选的模板名称
     * @return 创建的角色实例
     */
    @PostMapping
    public Character createCharacter(@RequestBody CharacterCreateRequest request,
                                   @RequestParam(required = false) String saveAsTemplate) {
        return characterFactory.createCharacter(
            request.getProfession(),
            request.getName(),
            request.getAttack(),
            request.getHealth(),
            request.getMana(),
            saveAsTemplate
        );
    }
    
    /**
     * 从预设模板克隆角色
     *
     * @param templateName 模板名称
     * @param newName 新角色名称
     * @return 克隆的角色实例
     */
    @PostMapping("/clone")
    public Character cloneFromTemplate(@RequestParam String templateName,
                                     @RequestParam String newName) {
        return characterFactory.createFromTemplate(templateName, newName);
    }
} 